package conversion.mapper;

import conversion.bean.File;
import org.apache.ibatis.annotations.*;

import java.util.List;

/**
 * File 实体类的 Mapper 接口，用于数据库处理
 */
@Mapper
public interface FileMapper {

    /**
     * 查询所有文件
     *
     * @return 返回包含所有 File 对象的列表
     */
    @Select("select * from file order by id asc")
    List<File> getAllFiles();

    /**
     * 根据文件名模糊查找
     *
     * @param searchValue 文件名
     * @return 返回包含符合条件的 File 对象列表
     */
    @Select("select * from file where file_name like concat('%', #{searchValue}, '%') order by id asc")
    List<File> getFilesByValue(String searchValue);

    /**
     * 根据文件 ID 获取文件
     *
     * @param id 文件 ID
     * @return 返回符合条件的 File 对象
     */
    @Select("select * from file where id = #{id}")
    File getFileById(Integer id);

    /**
     * 删除指定文件 ID 的文件
     *
     * @param id 文件 ID
     * @return 删除成功 --> true | 删除失败 --> false
     */
    @Delete("delete from file where id = #{id}")
    boolean deleteFileById(Integer id);

    /**
     * 修改指定文件 ID 的文件
     *
     * @param newFile 修改后的文件
     * @return 修改成功 --> true | 修改失败 --> false
     */
    @Update("update file set file_name = #{fileName}, file_type = #{fileType}, file_size = #{fileSize}, file_content = #{fileContent}, file_remark = #{fileRemark}, update_time = #{updateTime} where id = #{id}")
    boolean updateFile(File newFile);

    /**
     * 添加指定文件
     *
     * @param file 待添加的文件
     * @return 添加成功 --> true | 添加失败 --> false
     */
    @Insert("insert into file (file_name, file_type, file_size, file_content, file_remark, create_time, update_time) VALUES (#{fileName}, #{fileType}, #{fileSize}, #{fileContent}, #{fileRemark}, #{createTime}, #{updateTime})")
    boolean addFile(File file);
}

